export const pageFormItems = [
      {
        field: {
          name: 'name',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '智能体名称',

          },
          compProps: {
            clearable: true,
            placeholder: '左前缀匹配'
          }
        }
      },

]
export const addPageFormItems = [
  {
    field: {
      name: 'avatar',
    },
    element: {
      comp: 'PtUploadAvatar',
      formItemProps: {
        label: '头像'
      },
      compProps: {
      }
    }
  },


      {
        field: {
          name: 'name',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '智能体名称',
            required: true,
            tips: '名称唯一，如：算命大师'
          },
          compProps: {
            clearable: true,
          }
        }
      },


      {
        field: {
          name: 'profile',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '智能体简介',
            required: true,
            tips: '对智能体的简单介绍，以帮助用户快速了解其主要能力',
            displayBlock: true
          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 5
          }
        }
      },


      {
        field: {
          name: 'role',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '角色设定',
            tips: '主要设定智能体的人设与回复逻辑，人设设定会直接影响智能体的回答效果，请仔细填写',
            labelTips: '<div>\n' +
                '    <h1>角色设定示例</h1>\n' +
                '    <h2>#角色规范</h2>\n' +
                '    <p>你是一个健身教练，你的任务是针对用户的问题，结合训练科学、生理学和营养学等专业知识，给用户锻炼指导和营养信息。</p>\n' +
                '    <h2>#思考规范</h2>\n' +
                '    <ul>\n' +
                '        <li>1.当用户需要你输出饮食建议时，比如“帮我推荐减脂餐”，你应该优先调用knowledge_retrieval工具，并根据返回信息详细回答用户问题。</li>\n' +
                '        <li>2.当用户需要你输出健身计划时，你应该先调用knowledge_retrieval工具然后再调用eChartsToolCall工具，比如“帮我制定一周健身计划”。</li>\n' +
                '        <li>3.当knowledge_retrieval工具返回结果不能满足用户需求时，你可以根据用户意图修改参数再次调用该工具。</li>\n' +
                '        <li>4.当用户的需求不明确时，你应该主动优先明确用户需求。</li>\n' +
                '        <li>5.对于超出健身教练服务范围的需求如电影推荐等，你需要按如下话术委婉拒答“我只是一个健身教练，不能回答这个问题噢”，并引导用户提出关于健身相关的问题。</li>\n' +
                '    </ul>\n' +
                '    <h2>#回复规范</h2>\n' +
                '    <ul>\n' +
                '        <li>1.你需要以专业、可靠的风格回复用户。</li>\n' +
                '        <li>2.在每次结束对话时你可以向用户进行提问并引导相关话题深入进行。</li>\n' +
                '        <li>3.请注意你的回复内容长度不要超过200字。</li>\n' +
                '    </ul>\n' +
                '</div>',
            displayBlock: true

          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 15
          }
        }
      },


      {
        field: {
          name: 'isUsePrologue',
          value: false
        },
        element: {
          comp: 'el-switch',
          formItemProps: {
            label: '是否使用开场白',
            required: true,
            tips: '将在用户开启对话时展示，引导用户快速了解功能并开启对话，开场白开场文案会作为开场文案，用户进入对话时会自动看到开场文案，建议开场文案简单brief，且与角色设定保持一致。'
          },
          compProps: {
          }
        }
      },


      {
        field: {
          name: 'prologue',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '开场白开场文案',
            tips: '在开启使用开场白时请填写',
            required: ({form}) => (!!form.isUsePrologue),
            labelTips: '示例：<br/>您好！我是乾隆智游，作为古代皇帝中最长寿的乾隆皇帝，我很乐意为您分享关于旅游、美食、艺术和养生的智慧。请问有什么我可以帮助您的吗？',
            displayBlock: true
          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 5
          }
        }
      },


      {
        field: {
          name: 'prologueQuestionsJson',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '开场白问题',
            tips: '在开启使用开场白时有效，该项是一个配置项，请以数组的形式填写，一般建议3条',
            labelTips: '示例：<br/>[ "您在旅游时最欣赏哪种景色？",<br/>"您最喜欢的美食是什么？",<br/>"您如何鉴赏古代艺术品？"]',
            displayBlock: true
          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 15
          }
        }
      },


      {
        field: {
          name: 'isAutoPrologue',
          value: false
        },
        element: {
          comp: 'el-switch',
          formItemProps: {
            label: '是否自动生成开场白开场文案',
            required: true,
            tips: '开启后将总结历史对话，动态生成开场文案,注意这需要有历史对话，否则将使用预设开场文案'
          },
          compProps: {
          }
        }
      },


      {
        field: {
          name: 'isUseAutoAsk',
          value: false
        },
        element: {
          comp: 'el-switch',
          formItemProps: {
            label: '是否使用自动追问',
            required: true,
            tips: '在智能体在每次回复后，自动根据对话内容提供给用户3条问题建议'

          },
          compProps: {
          }
        }
      },


  {
    field: {
      name: 'autoAskRule',
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '自动追问规则',
        tips: '在开启使用自动追问时可以指定追问规则，以更加贴近话题',
        labelTips: '示例：<br/>问题要求：<br/>' +
            '-追问问题需要根据上一轮回答，询问更多背景信息或扩展性的问题。<br/>' +
            '-追问问题应该与你上一轮的回复紧密相关，以便引发进一步的讨论，推动对话深入。<br/>' +
            '-追问问题需要避免与已经讨论过的问题或者之前的回答内容重复。<br/>' +
            '-追问问题需要基于智能体的功能和擅长领域进行引导提问。',
        displayBlock: true
      },
      compProps: {
        clearable: true,
        type: 'textarea',
        rows: 15
      }
    }
  },


      {
        field: {
          name: 'presetDialogueJson',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '预设对话',
            tips: '预定义几组对话，以引导ai在初次对话时具有更丰富的上下文，回答的更加准确。请以数组的形式填写，一般建议3-5条',
            labelTips: '示例：<br/>[{"system": "你是一个简历高手，擅长精细排版和表达个人信息"},<br/> {"user": "我需要你写一份通用简历，每当我输入一个职业、项目名称时，你需要完成以下任务：<br/>' +
                'task1: 列出这个人的基本资料，如姓名、出生年月、学历、面试职位、工作年限、意向城市等。一行列一个资料。<br/>' +
                'task2: 详细介绍这个职业的技能介绍，至少列出10条<br/>' +
                'task3: 详细列出这个职业对应的工作经历，列出2条<br/>' +
                'task4: 详细列出这个职业对应的工作项目，列出2条。项目按照项目背景、项目细节、项目难点、优化和改进、我的价值几个方面来描述，多展示职业关键字。也可以体现我在项目管理、工作推进方面的一些能力。<br/>' +
                'task5: 详细列出个人评价，100字左右<br/>' +
                '你把以上任务结果按照以下Markdown格式输出：<br/>' +
                '```<br/>' +
                '### 基本信息<br/>' +
                '<task1 result><br/>' +
                '### 掌握技能<br/>' +
                '<task2 result><br/>' +
                '### 工作经历<br/>' +
                '<task3 result><br/>' +
                '### 项目经历<br/>' +
                '<task4 result><br/>' +
                '### 关于我<br/>' +
                '<task5 result><br/>' +
                '```"},<br/>{"assistant": "好的，请问您需要我为哪个职业编写通用简历呢？"}]',
            displayBlock: true

          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 15
          }
        }
      },


      {
        field: {
          name: 'quickInstructionsJson',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '快捷指令',
            tips: '辅助用户在对话聊天时方便以直接点击的方式输入问题，该项是一个配置项数组',
            labelTips: '示例：<br/>[{"name": "画一幅漫画图片","content": "请帮我画一幅漫画图片，要求在海边看远处的大海，海上有一艘轮船，天空有海鸥飞翔"}]',
            displayBlock: true
          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 15
          }
        }
      },


      {
        field: {
          name: 'isUseOnlineSearch',
          value: false
        },
        element: {
          comp: 'el-switch',
          formItemProps: {
            label: '是否使用联网搜索',
            required: true,
            tips: '开启后将智能体将在需要时自动搜索最新的全网信息，给到用户更实时、丰富的回答'
          },
          compProps: {
          }
        }
      },


      {
        field: {
          name: 'isUseKnowledgeBase',
          value: false
        },
        element: {
          comp: 'el-switch',
          formItemProps: {
            label: '是否使用知识库',
            required: true,
            tips: '扩展智能体的知识储备，为用户提供更针对性的答案'
          },
          compProps: {
          }
        }
      },


      {
        field: {
          name: 'agiKnowledgeBaseId',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '知识库',
            required: ({form}) => (!!form.isUseKnowledgeBase),
            tips: '开启使用知识库时请填写'
          },
          compProps: {
          }
        }
      },


      {
        field: {
          name: 'isUseMcp',
          value: false
        },
        element: {
          comp: 'el-switch',
          formItemProps: {
            label: '是否使用mcp',
            required: true,
            tips: '扩展智能体的知识储备，为用户提供更针对性的答案，mcp是扩展智能体具体调用外部知识的能力，来丰富回答对话问题的上下文，可以无限扩展智能体的能力',
            displayBlock: true
          },
          compProps: {
          }
        }
      },


      {
        field: {
          name: 'mcpPluginsJson',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: 'mcp插件配置',
            required: ({form}) => (!!form.isUseMcp),
            tips: '开启使用mcp时需要配置',
            displayBlock: true
          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 15
          }
        }
      },


      {
        field: {
          name: 'isUseLongTermMemory',
          value: false
        },
        element: {
          comp: 'el-switch',
          formItemProps: {
            label: '是否使用长期记忆',
            required: true,
            tips: '总结聊天对话的内容，并用于更好的回答用户的问题'
          },
          compProps: {
          }
        }
      },


      {
        field: {
          name: 'isUseVoice',
          value: false
        },
        element: {
          comp: 'el-switch',
          formItemProps: {
            label: '是否使用声音',
            required: true,
            tips: '支持选择及克隆声音，用于输出内容播报以及智能体与用户对话的声音'
          },
          compProps: {
          }
        }
      },


      {
        field: {
          name: 'voiceJson',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '声音配置',
            required: ({form}) => (!!form.isUseVoice),
            tips: '开启使用声音时需要配置，应该为一个对象,包括播放音量（volume）、使用的模型（model）、播放速度（speed）、播放声音（音色）（voice）',
            labelTips: 'volume: 播放音量，取值0 ~ 1100，步长为1<br/>' +
                'model: 使用的模型名称，一般为tts模型名称，如：tts-1-1106<br/>' +
                'speed: 播放速度，取值0.25 ~ 4，步长为0.001<br/>' +
                'voice: 播放声音（音色），这是一个枚举值<br/>' +
                '示例：<br/>{"volume": 50,"model": "tts-1-1106","speed": 1.0,"voice": "default_voice"}',
            displayBlock: true

          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 15
          }
        }
      },


      {
        field: {
          name: 'modelJson',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '模型配置',
            tips: '模型配置，应该为一个对象，配置使用的模型、随机性 (temperature)、核采样 (topP)、单次回复限制 (maxTokens)、话题新鲜度 (presencePenalty)、频率惩罚度 (frequencyPenalty)等',
            labelTips: 'temperature: 随机性，值越大，回复越随机,取值0.0 ~ 1.0，步长为0.1<br/>' +
                'topP: 核采样，与随机性类似，但不要和随机性一起更改,取值0.0 ~ 1.0，步长为0.1<br/>' +
                'maxTokens: 单次回复限制，单次交互所用的最大 Token 数,取值1024 ~ 512000，步长为1<br/>' +
                'presencePenalty: 话题新鲜度，值越大，越有可能扩展到新话题,取值-2.0 ~ 2.0，步长为0.1<br/>' +
                'frequencyPenalty: 频率惩罚度，值越大，越有可能降低重复字词,取值-2.0 ~ 2.0，步长为0.1<br/>' +
                '示例：<br/>{"temperature": 1.0,"topP": 1.0,"maxTokens": 4000,"presencePenalty": 0.7,"frequencyPenalty": 0.0}',
            displayBlock: true

          },
          compProps: {
            clearable: true,
            type: 'textarea',
            rows: 15
          }
        }
      },


      {
        field: {
          name: 'historyMessageMaxLength',
          value: 10
        },
        element: {
          comp: 'el-input-number',
          formItemProps: {
            label: '附带历史消息数',
            required: true,
            tips: '每次对话时，附带的历史消息数，建议不要太大，避免消耗token',
          },
          compProps: {
            min: 1,
            max: 64,
            step: 1,
            controlsPosition: 'right'
          }
        }
      },


      {
        field: {
          name: 'historyMessageCompressionThreshold',
          value: 1000
        },
        element: {
          comp: 'el-input-number',
          formItemProps: {
            label: '历史消息长度压缩阈值',
            required: true,
            tips: '当未压缩的历史消息超过该值时，将压缩历史消息',
          },
          compProps: {
            min: 500,
            max: 4000,
            step: 1,
            controlsPosition: 'right'
          }
        }
      },


      {
        field: {
          name: 'remark',
        },
        element: {
          comp: 'el-input',
          formItemProps: {
            label: '描述',
            tips: '针对该智能体写一些说明性的备注信息'

          },
          compProps: {
            clearable: true,
          }
        }
      },


]

// 更新和添加一致
export const updatePageFormItems = addPageFormItems

